﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using HardMobTopicInfo;
using HardMobInfra;
using HardMobCommons.Entidades;

namespace HardMobCommons
{
	public class ConsultaTopico
	{
		private Topico topico;
		public void Consultar(Topico topico)
		{
			this.topico = topico;

			string html = DownloadHtml(topico.URL);
			var htmlUsuarios = HardMobUserParser.RetornarUsuarios(html);
			var novosUsuarios = htmlUsuarios.Except(topico.Usuarios, new UsuarioHmIdComparer()).ToList();

			InserirMensagensNoTopico(htmlUsuarios);
			InserirNovosUsuarioNoTopico(novosUsuarios);
		}

		private string DownloadHtml(string url)
		{
			using (WebClient cliente = new WebClient())
			{
				return cliente.DownloadString(url);
			}
		}

		private void InserirNovosUsuarioNoTopico(List<Usuario> novosUsuarios)
		{
			topico.Usuarios = topico.Usuarios.Concat(novosUsuarios).ToList();
		}

		private void InserirMensagensNoTopico(List<Usuario> htmlUsuarios)
		{
			foreach (Usuario usuario in topico.Usuarios)
			{
				var mensagens = htmlUsuarios.FirstOrDefault(u => u.HmId == usuario.HmId).Mensagens.FirstOrDefault();
				usuario.Mensagens.Add(mensagens);
			}
		}

	}
}
